<?php


namespace app\back\model;

use think\facade\Db;
use think\response\Json;
use \Exception;

class TemplateModel
{
    private static $_table = 'template'; // 模板表

    /**添加模板
     * @param $input
     * @param $info
     * @return Json
     */
    public static function add($input,$info)
    {
        try {
            $input['admin_id'] = $info['id'];
            $input['create_time'] = time();
            $input['is_system'] = $info['admin_level'] == 0 ? 1 : 0;
            $rtn = Db::table(self::$_table)->insert($input);
            if ($rtn === 1) return jsonSuccess('添加成功');
            return jsonFail('添加失败');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**获取模板列表
     * @param $input
     * @param $info
     * @return Json
     */
    public static function lst($input,$info)
    {
        try {
            if ($info['admin_level'] != 0) {
                $mapRaw = "(`admin_id` = {$info['id']} OR is_system = 1)";
            } else {
                $mapRaw = "`admin_id` = {$info['id']}";
            }
            if ($input['status'] !== '') {
                $mapRaw .= " And `status` = {$input['status']}";
            } else {
                $mapRaw .= ' And `status` IN (1,2)';
            }
            if ($input['name'] !== '') {
                $mapRaw .= " And `name` LIKE '%{$input['name']}%'";
            }
            $field = 'id,name,supplier_per,center_per,community_per,sup_to_cen_per,cen_to_com_per,status,create_time,is_system,admin_id';
            $table = Db::table(self::$_table)->whereRaw($mapRaw)->field($field);
            $count = $table->count();
            if ($count == 0) return jsonSuccess('暂无数据', ['count' => 0,'list' => []]);
            $list = $table->page($input['page'], $input['limit'])->order(['is_system' => 'desc', 'create_time' => 'desc'])->select()->toArray();
            foreach ($list as &$v) {
                if ($v['is_system'] == 1 && $v['admin_id'] != $info['id']) {
                    $v['is_operate'] = 0;
                } else {
                    $v['is_operate'] = 1;
                }
                unset($v['admin_id']);
            }
            return jsonSuccess('获取成功', ['count' => $count, 'list' => $list]);
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**删除模板
     * @param $input
     * @param $info
     * @return Json
     */
    public static function delete($input,$info)
    {
        try {
            // 获取当前信息
            $tempInfo = Db::table(self::$_table)->field('admin_id,status')->where('id', $input['id'])->find();
            if (!$tempInfo) return jsonFail('未找到模板信息');
            if ($tempInfo['admin_id'] != $info['id']) return jsonFail('该模板非您直接管理，您没有权限操作');
            if ($tempInfo['status'] == 3) return jsonFail('该模板已删除无法继续操作');
            // 根据不同status执行不同操作
            $map = [
                ['id', '=', $input['id']],
                ['admin_id', '=', $info['id']],
                ['status', '<>', 3]
            ];
            $rtn = Db::table(self::$_table)->where($map)->update(['status' => 3]);
            if ($rtn) return jsonSuccess('删除成功');
            return  jsonFail('数据没有更新，删除失败');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**修改状态
     * @param $input
     * @param $info
     * @return Json
     */
    public static function changeStatus($input,$info)
    {
        try {
            // 获取当前信息
            $tempInfo = Db::table(self::$_table)->field('admin_id,status')->where('id', $input['id'])->find();
            if (!$tempInfo) return jsonFail('未找到模板信息');
            if ($tempInfo['admin_id'] != $info['id']) return jsonFail('该模板非您直接管理，您没有权限操作');
            if ($tempInfo['status'] == 3) return jsonFail('该模板已删除无法继续操作');
            // 根据不同status执行不同操作
            $map = [
                ['id', '=', $input['id']],
                ['admin_id', '=', $info['id']],
                ['status', '=', $input['status'] == 1 ? 2 : 1]
            ];
            $rtn = Db::table(self::$_table)->where($map)->update(['status' => $input['status']]);
            if ($rtn) return jsonSuccess('修改成功');
            return  jsonFail('数据没有更新，修改失败');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**获取单个模板信息
     * @param $input
     * @param $info
     * @return Json
     */
    public static function getOnly($input,$info)
    {
        try {
            // 获取当前信息
            $tempInfo = Db::table(self::$_table)->field('admin_id,status,id,name,supplier_per,center_per,community_per,sup_to_cen_per,cen_to_com_per')->where('id', $input['id'])->find();
            if (!$tempInfo) return jsonFail('未找到模板信息');
            if ($tempInfo['admin_id'] != $info['id']) return jsonFail('该模板非您直接管理，您没有权限操作');
            if ($tempInfo['status'] == 3) return jsonFail('该模板已删除无法继续操作');
            unset($tempInfo['admin_id']);
            unset($tempInfo['status']);
            return jsonSuccess('获取成功', $tempInfo);
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }

    /**编辑模板信息
     * @param $input
     * @param $info
     * @return Json
     */
    public static function edit($input,$info)
    {
        try {
            // 获取当前信息
            $tempInfo = Db::table(self::$_table)->field('admin_id,status,id,name,supplier_per,center_per,community_per,sup_to_cen_per,cen_to_com_per')->where('id', $input['id'])->find();
            if (!$tempInfo) return jsonFail('未找到模板信息');
            if ($tempInfo['admin_id'] != $info['id']) return jsonFail('该模板非您直接管理，您没有权限操作');
            if ($tempInfo['status'] == 3) return jsonFail('该模板已删除无法继续操作');
            $rtn = Db::table(self::$_table)->update($input);
            if ($rtn) return jsonSuccess('编辑成功');
            return jsonFail('数据无变化，编辑失败');
        } catch (Exception $e) {
            return jsonFail('服务内部错误~');
        }
    }
}